import org.apache.hadoop.hive.ql.exec.UDF;

import java.util.HashMap;
import java.util.Map;

public class ConvertStuStatus extends UDF {
    private static Map<String, String> statusMap = new HashMap();

    static {
        statusMap.put("621", "01"); // 在读
        statusMap.put("622", "02"); // 休学
        statusMap.put("623", "03"); // 退学
        statusMap.put("624", "10"); // 转学
        statusMap.put("625", "11"); // 死亡
        statusMap.put("626", "11"); // 死亡
        statusMap.put("627", "10"); // 转学
        statusMap.put("628", "06"); // 流失
        statusMap.put("629", "07"); // 毕业
        statusMap.put("630", "08"); // 结业
        statusMap.put("631", "10"); // 转学
        statusMap.put("632", "10"); // 转学
        statusMap.put("6840", "99"); // 其他（待异动审批）
        statusMap.put("999", "99"); // 其他（手动删除）
        statusMap.put("12489", "99"); // 其他（新生注册未审核）
        statusMap.put("12490", "99"); // 其他（新生校验不通过）
        statusMap.put("22768", "99"); // 其他（跨省就学）
        statusMap.put("46619", "99"); // 其他（留级）
        statusMap.put("46620", "99"); // 其他（跳级）
        statusMap.put("49320", "99"); // 其他（跨省就学不通过）
        statusMap.put("49888", "99"); // 其他（出境离校）
        statusMap.put("20167", "99"); // 其他（新生注册待校验）
        statusMap.put("6310", "09"); // 肄业
        statusMap.put("20168", "99"); // 其他（新生校验成功）
        statusMap.put("00", "01");
        statusMap.put("18", "99"); // 其他
        statusMap.put("53", "07"); //
        statusMap.put("52", "99"); //
        statusMap.put("54", "15"); // 失踪
        statusMap.put("13", "04"); // 停学
        statusMap.put("31", "03"); // 退学
        statusMap.put("42", "14"); // 开除
        statusMap.put("01", "13"); // 公派留学
        statusMap.put("63", "09"); //
        statusMap.put("32", "03"); // 0--无
        statusMap.put("11", "02"); // 0--无
        statusMap.put("51", "11"); // 0--无
        statusMap.put("99", "99"); // 0--无
    }

    /**
     * 根据原始学生状态转换为标准状态
     * @param status 原始状态码
     * @return 标准状态码
     */
    public String evaluate(String status) {
        return statusMap.getOrDefault(status,"999");
    }
}